$(function () {

    // 1.需求: 全选

    $('.allsel').on('change', function () { //给全选框注册改变事件
        let bool = $(this).prop('checked') //获取全选框的选中状态
        //将全选框的状态赋给其他商品和其他全选按钮
        $('.sinsel,.allsel').prop('checked', bool)
        allPrice() //总计
    })


    // 2. 需求: 有一个商品没有选中就取消全选
    $('.sinsel').on('change', function () {
        let allLen = $('.sinsel').length //获取商品总数
        let checkLen = $('.sinsel:checked').length //获取选中商品总数
        $('.allsel').prop('checked', checkLen === allLen)

        //总计
        allPrice()
    })



    //3. 需求:增加商品数量
    $('.add').on('click', function () { //给增加键注册点击事件

        let num = $(this).siblings('.pronum').val(); //获取商品数量
        //将商品数量加一
        $(this).siblings('.pronum').val(++num);

        //小计
        subPrice(this, num)
        //总计
        allPrice()

    })

    //4.减少商品数量

    $('.reduce').on('click', function () { //给减少键注册点击事件
        let num = +$(this).siblings('.pronum').val(); //获取商品数量，值为数字
        if (num === 1) return;
        //数量减一
        $(this).siblings('.pronum').val(--num);


        //小计
        subPrice(this, num)
        //总计
        allPrice()
    })


    //输入商品数量

    $('.pronum').on('keyup', function () { //给数量框注册按键抬起事件
        let num = $(this).val()//获取输入的值
        num = parseInt(num)//将输入的内容变为数字
        //判断值是否是NaN
        if (isNaN(num)) {
            $(this).val(num = 1)//如果是NaN就将值变为1
        } else {
            $(this).val(num)
        }

        //小计
        subPrice(this, num)
        //总计
        allPrice()
    })


    //6.小计函数
    function subPrice(it, qua) {
        //获取单价的值
        let price = $(it).closest('.shopcar-body').find('.sinprice').text()
        //将单价*数量的值渲染到小计上面
        $(it).closest('.shopcar-body').find('.smallprice').text((qua * price).toFixed(2))
    }

    //7.总计函数
    function allPrice() {
        let totalPrice = 0; //初始化总价为零
        $('.sinsel:checked').each(function (index, dom) {//遍历选中的商品
          //获取选种商品的小计价格
            let sPrice = +$(dom).closest('.shopcar-body').find('.smallprice').text()
            //累加
            totalPrice += sPrice;
        })
        //将得到的总价渲染到页面的总价上
        $('.totalPrice').text(totalPrice);
    }







})